'use strict';
import React from 'react';
import {
    ToastAndroid,
    AsyncStorage,
} from 'react-native';

import Storage  from 'react-native-storage';

class Student{
    name = 'defaultName';
    age;
    gender;

    setName(argName){
        this.name = argName;
    }

    getName()
    {
        return this.name;
    }
}

export default class ArgFuncHelper{
    classArg1   = '成功读取class属性';
    sameNameArg = '读取了同名属性中的class范围的值';

    xiaoming;
    localStor;

    constructor(){
        this.objArg1        = '成功读取对象实例属性';
        this.sameNameArg    = '读取了同名属性中的Object范围的值';

        this.xiaoming       = new Student();
        this.localStor      = new Storage({
            // 最大容量，默认值1000条数据循环存储
            size: 1000,
            // 存储引擎：对于RN使用AsyncStorage，对于web使用window.localStorage
            // 如果不指定则数据只会保存在内存中，重启后即丢失
            storageBackend: AsyncStorage,
            // 数据过期时间，默认一整天（1000 * 3600 * 24 毫秒），设为null则永不过期
            defaultExpires: 1000*3600*24,

            // 读写时在内存中缓存数据。默认启用。
            enableCache: true,
            // 如果storage中没有相应数据，或数据已过期，
            // 则会调用相应的sync方法，无缝返回最新数据。
            // sync方法的具体说明会在后文提到
            // 你可以在构造函数这里就写好sync的方法
            // 或是写到另一个文件里，这里require引入
            // 或是在任何时候，直接对storage.sync进行赋值修改
            sync: {}  // 这个sync文件是要你自己写的
        });


        this.testBindWithArg= this.testBindWithArg.bind(this);
    };

    testArrow = (arg) => {
        ToastAndroid.show(arg, ToastAndroid.SHORT);
    };

    testBindWithNoArg(){
        ToastAndroid.show('测试无参bind函数成功', ToastAndroid.SHORT);
    };

    testBindWithArg(arg){
        ToastAndroid.show(arg, ToastAndroid.SHORT);
    };

    testReadClassArg(){
        ToastAndroid.show(this.classArg1, ToastAndroid.SHORT);
    };

    testReadObjectArg(){
        ToastAndroid.show(this.objArg1, ToastAndroid.SHORT);
    };

    testReadSameArg(){
        ToastAndroid.show(this.sameNameArg, ToastAndroid.SHORT);
    };

    testReadSameArgByArrow = () => {
        ToastAndroid.show(this.sameNameArg, ToastAndroid.SHORT);
    };

    testThiz(){
        // 目前测的此方法鸡肋
        let thiz = this;
        ToastAndroid.show(this.sameNameArg, ToastAndroid.SHORT);
    };

    testA(){
        this._testB()
    };

    testArrowA = () => {
        this._testB()
    };

    _testB(){
        ToastAndroid.show(this.sameNameArg, ToastAndroid.SHORT);
    };


    setXiaomingName(argName){
        this.xiaoming.setName(argName);
    }

    getXiaomingName(){
        return this.xiaoming.getName();
    }
}
